package com.mezz.bones.im.logic.notify.domain.request;

import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @Author: zhuang
 * @Date: 2025/5/12 14:18
 * @Description: TODO
 * @Version: 1.0
 **/

@Data
public class PrivateMessageAfterSendRequest {

    /**
     * 事件类型
     * @see com.mezz.bones.im.common.enums.ImCallbackEventEnum
     */
    private String eventType;

    /**
     * 接口重放逻辑判断 一定时间内请求失效
     */
    private Long timestamp;

    /**
     * 防止接口重放
     */
    private String nonce;

    @ApiModelProperty("消息所属用户-发送者ID")
    private String userId;

    @ApiModelProperty("用户端类型 1user-用户 srm-供应商 saas-平台端")
    private String userType;

    @ApiModelProperty("消息对端用户-接收者ID")
    private String peerId;

    @ApiModelProperty("用户类型")
    private String peerType;

    @ApiModelProperty("客服相关ID 被服务方→客服方 记录的是客服ID   客服放→被服务方 记录的是供应商ID或者平台ID")
    private String relationId;

    @ApiModelProperty("客服业务 0子号(供应商、平台客服信息) 1母号(供应商、平台 主体信息) 具体数值映射到relation_id 非客服业务 -1")
    private Integer relationType;

    @ApiModelProperty("消息序列号")
    private String msgSeq;

    @ApiModelProperty(value = "消息类型(0普通用户消息 1系统消息)")
    private Integer msgType;

    @ApiModelProperty("是否同步消息到对端 0否1是")
    private Integer sync2Peer;

    /**
     * @see com.mezz.bones.im.common.enums.ContentTypeEnum
     */
    @ApiModelProperty("消息内容类型错误，必须是 text、audio、video、custom 或 image")
    private String contentType;

    @ApiModelProperty("消息内容")
    private JSONObject content;

    /**
     * @see com.mezz.bones.im.common.enums.ContentTypeEnum
     */
    @ApiModelProperty("消息扩展信息")
    private JSONObject msgExtra;
}
